<!DOCTYPE html>
<html lang="en">





<head>
  <meta charset="UTF-8">
  <link rel="apple-touch-icon" sizes="76x76" href="/img/favicon.png">
  <link rel="icon" type="image/png" href="/img/favicon.png">
  <meta name="viewport"
        content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, shrink-to-fit=no">
  <meta http-equiv="x-ua-compatible" content="ie=edge">
  
  <meta name="theme-color" content="#2f4154">
  <meta name="description" content="My Personal Website For Blog">
  <meta name="author" content="黄宇辉">
  <meta name="keywords" content="learning note,hexo blog">
  <title>全国计算机等级考试-Java - 欢迎参观小灰灰的网站哟 ヾ(◍°∇°◍)ﾉﾞ ~</title>

  <link  rel="stylesheet" href="https://cdn.staticfile.org/twitter-bootstrap/4.4.1/css/bootstrap.min.css" />


  <link  rel="stylesheet" href="https://cdn.staticfile.org/github-markdown-css/4.0.0/github-markdown.min.css" />
  <link  rel="stylesheet" href="/lib/hint/hint.min.css" />

  
    <link  rel="stylesheet" href="https://cdn.staticfile.org/highlight.js/10.0.0/styles/vs2015.min.css" />
  

  


<!-- 主题依赖的图标库，不要自行修改 -->
<link rel="stylesheet" href="//at.alicdn.com/t/font_1749284_yg9cfy8wd6.css">

<link rel="stylesheet" href="//at.alicdn.com/t/font_1736178_pjno9b9zyxs.css">

<link  rel="stylesheet" href="/css/main.css" />

<!-- 自定义样式保持在最底部 -->


  <script  src="/js/utils.js" ></script>
</head>


<body>
  <header style="height: 70vh;">
    <nav id="navbar" class="navbar fixed-top  navbar-expand-lg navbar-dark scrolling-navbar">
  <div class="container">
    <a class="navbar-brand"
       href="/">&nbsp;<strong>ANONYMOUS</strong>&nbsp;</a>

    <button id="navbar-toggler-btn" class="navbar-toggler" type="button" data-toggle="collapse"
            data-target="#navbarSupportedContent"
            aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
      <div class="animated-icon"><span></span><span></span><span></span></div>
    </button>

    <!-- Collapsible content -->
    <div class="collapse navbar-collapse" id="navbarSupportedContent">
      <ul class="navbar-nav ml-auto text-center">
        
          
          
          
          
            <li class="nav-item">
              <a class="nav-link" href="/">
                <i class="iconfont icon-home-fill"></i>
                Home
              </a>
            </li>
          
        
          
          
          
          
            <li class="nav-item">
              <a class="nav-link" href="/archives/">
                <i class="iconfont icon-archive-fill"></i>
                Archives
              </a>
            </li>
          
        
          
          
          
          
            <li class="nav-item">
              <a class="nav-link" href="/tags/">
                <i class="iconfont icon-tags-fill"></i>
                Tags
              </a>
            </li>
          
        
          
          
          
          
            <li class="nav-item">
              <a class="nav-link" href="/about/">
                <i class="iconfont icon-user-fill"></i>
                About
              </a>
            </li>
          
        
        
          <li class="nav-item" id="search-btn">
            <a class="nav-link" data-toggle="modal" data-target="#modalSearch">&nbsp;&nbsp;<i
                class="iconfont icon-search"></i>&nbsp;&nbsp;</a>
          </li>
        
      </ul>
    </div>
  </div>
</nav>

    <div class="view intro-2" id="background" parallax=true
         style="background: url('/img/default.png') no-repeat center center;
           background-size: cover;">
      <div class="full-bg-img">
        <div class="mask flex-center" style="background-color: rgba(0, 0, 0, 0.3)">
          <div class="container text-center white-text fadeInUp">
            <span class="h2" id="subtitle">
              
            </span>

            
              
  <div class="mt-3 post-meta">
    <i class="iconfont icon-date-fill" aria-hidden="true"></i>
    <time datetime="2019-03-15 11:10">
      March 15, 2019 am
    </time>
  </div>


<div class="mt-1">
  
    
    <span class="post-meta mr-2">
      <i class="iconfont icon-chart"></i>
      2.5k 字
    </span>
  

  
    
    <span class="post-meta mr-2">
      <i class="iconfont icon-clock-fill"></i>
      
      
      27
       分钟
    </span>
  

  
  
</div>

            
          </div>

          
        </div>
      </div>
    </div>
  </header>

  <main>
    
      

<div class="container-fluid">
  <div class="row">
    <div class="d-none d-lg-block col-lg-2"></div>
    <div class="col-lg-8 nopadding-md">
      <div class="container nopadding-md" id="board-ctn">
        <div class="py-5" id="board">
          <div class="post-content mx-auto" id="post">
            
            <article class="markdown-body">
              <h3 id="NCRE-National-Computer-Rank-Examination-——-二级Java篇"><a href="#NCRE-National-Computer-Rank-Examination-——-二级Java篇" class="headerlink" title="NCRE(National Computer Rank Examination) —— 二级Java篇"></a>NCRE(National Computer Rank Examination) —— 二级<code>Java</code>篇</h3><ul>
<li><img src="/2019/03/15/%E5%85%A8%E5%9B%BD%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%AD%89%E7%BA%A7%E8%80%83%E8%AF%95-Java/excitement.jpg" srcset="/img/loading.gif" alt=" "></li>
</ul>
<p><strong><code>敲黑板：二级考试的试题都是在往年的试卷中随机抽取的 ! 勿慌 ✧⁺⸜(●˙▾˙●)⸝⁺✧</code></strong></p>
<ul>
<li><h3 id="选择题总结-重点-易错点"><a href="#选择题总结-重点-易错点" class="headerlink" title="选择题总结(重点+易错点)"></a>选择题总结(<code>重点+易错点</code>)</h3></li>
</ul>
<ol>
<li><p><em>try与catch的匹配是: catch到的异常是try中可能抛出的异常或其子类的实例.</em></p>
</li>
<li><p><em>按照标准的I/O模型,Java提供了三种标准流,分别为：<code>System.in</code> , <code>System.out</code> , <code>System.err</code>.</em></p>
</li>
<li><p><em>属于过滤字节输出流的类是：<code>BufferedOutputSteam</code></em>.</p>
</li>
<li><p><em>当窗口被激活时，调用的窗口事件的方法是：<code>public void windowActivated(WindowEvent)</code></em></p>
</li>
<li><p><em>对类进行并发控制，需要私有属性进行定义变量(private),用锁将方法锁起来<code>synchronized</code>,这样就不会出现并发出现异常情况.</em></p>
</li>
<li><p><em><code>Swing</code>组件的外观与具体平台无关.</em></p>
</li>
<li><p><em>在Java中的开发包1.7之前，switch不支持<code>String</code>类型数据,case值和key值匹配时,程序会报错 !</em></p>
</li>
<li><p><em>在一个类中可以定义为多个名称相同,但参数不同的方法,这种机制叫做：重载.</em></p>
</li>
<li><p><em>匿名内部类也就是没有名字的内部类,正因为没有名字,所以匿名内部类只能使用一次!它通常用来简化代码编写,但使用匿名内部类还有一个前提条            件：<code>必须继承一个父类或实现一个接口 !</code></em></p>
</li>
<li><p><em>类变量必须带有的修饰符为：static</em></p>
</li>
<li><p><em>在Java中二维数组定义的语法为：数据类型[][]数组名=new 数据类型[行数][列数];</em></p>
</li>
<li><p><em>在Java.io包的字节输入流中,过滤器输入流的基类是: <code>FilterInputStream</code></em></p>
</li>
<li><p><em>所有字符输入流都从<code>Reader</code>类继承,所有字符输出流都从<code>Writer</code>类继承.</em></p>
</li>
<li><p><em>Swing除继续沿用了AWT中的<code>FlowLayout,BorderLayout,CardLayout,GridLayout,GridBagLayout</code>布局管理器外,新增了一个<code>BoxLayout</code>布局管理      器.<code>BoxLayout</code>布局管理器按照自上而下(y轴)或者从左到右(x轴)的顺序布局依次加入构件.</em></p>
</li>
<li><p><em>java.awt.event包中定义了适配器类；该包中定义的适配器类包括以下几个:</em> </p>
<ul>
<li><code>ComponentAdapter 构件适配器</code></li>
<li><code>ContainerAdapter 容器适配器</code></li>
<li><code>FocusAdapter 焦点适配器</code></li>
<li><code>MouseAdapter 鼠标适配器</code></li>
<li><code>KeyAdapter 键盘适配器</code></li>
<li><code>MouseMotionAdapter 鼠标运动适配器</code> </li>
<li><code>WindowAdapters 窗口适配器</code></li>
<li><code>而FrameAdapter 不属于事件适配器类 !</code>*</li>
</ul>
</li>
<li><p><em>如果发生下面几种情况时,处于运行状态的线程就进入阻塞状态 :</em></p>
<ul>
<li>线程调用<code>sleep();</code> / <code>join();</code> / <code>wait();</code>方法.</li>
<li>如果线程中使用<code>sychronized</code>来请求对象的所未获得时.</li>
<li>如果线程中有输入/输出操作,则进入阻塞状态;待输入/输出操作结束后,线程进入可运行状态.</li>
</ul>
</li>
<li><p><em>在Java中,使用<code>synchronized</code>关键字标识临界区.Java平台将每个由<code>synchronized</code>语句设置的对象设置一个锁,称为<code>对象锁</code>,它是一种独占的排        他锁,既同一时刻最多只能有一个线程获取该锁,为了能够正常地使用对象锁，对共享数据的所有访问都必须在临界区内.同时临界区的共享数据必须是私       有的,确保只能通过对象的方法才能访问到.</em> </p>
</li>
<li><p><em>算法的空间复杂度是指算法在执行过程中所需的内存空间.算法执行期间所需的存储空间包括3个部分:</em></p>
<ul>
<li>输入数据的存储空间</li>
<li>程序本身所占的存储空间</li>
<li>算法执行过程中所需要的额外空间</li>
</ul>
</li>
<li><p><em><code>需求分析</code>是对待开发软件提出的需求进行分析并给出详细设计,是解决软件做什么的阶段.</em></p>
</li>
<li><p><em>软件设计可以使用的工具有<code>总体结构图</code>,<code>程序流程图</code>,<code>N-S图</code>,<code>PAD图</code>..注意：<code>数据流程图(DFD)</code>是需求分析使用的工具 !</em></p>
</li>
<li><p><em>逻辑设计阶段形成逻辑数据模型(从<code>E-R图</code>向<code>关系模式</code>转换).注意点：关系模式设计属于：<code>逻辑设计</code></em></p>
</li>
<li><p><em>能够运行Java字节码的命令为: <code>javac</code></em></p>
</li>
<li><p><em><code>break</code>在java起到跳出循环的作用.<code>continue</code>是跳过当次循环继续执行下一次循环.</em></p>
</li>
<li><p><em><code>XML</code>只是一个配置文件通过流将XML件读取出来，并不属于字节流 !</em></p>
</li>
<li><p><em><code>yield()</code>该方法与<code>sleep()</code>类似,只是不能由用户指定暂停多长时间,并且<code>yield()</code>方法只能让同优级的线程有执行的机会 !</em></p>
</li>
<li><p><em>javap的作用: <code>Javap</code>是 Java class文件分解器,可以反编译,也可以查看java编译器生成的字节码.</em></p>
</li>
<li><p><em>在数据库设计中,在需求分析阶段建立数据字典.</em></p>
</li>
<li><p><em>注意: 在 <code>/</code> 运算中并不存四舍五入的操作!只取整数部分!</em></p>
</li>
<li><p><em>正则表达式是一种描述某种匹配检索规则的字符串.</em></p>
<ul>
<li>java.util.regex 包中有一个<code>Pattern</code>类,用于进行快速模拟匹配.</li>
<li>java.util.regex 包还具有一个<code>Matcher</code>匹配器类. </li>
</ul>
</li>
<li><p><em><code>javax.swing.text</code>是文本类包,<code>javax.swing.table</code>是表格类包,<code>javax.swing.plaf</code>包括一些对外观样式操作的类和接口.</em></p>
</li>
<li><p><em><code>JFrame</code>是页面容器,<code>JToolBar</code>为工具条(属于容器的一种).</em></p>
</li>
<li><p><em>Java中的线程包含<code>CPU</code>,<code>代码</code>,<code>数据</code>三个部分</em></p>
</li>
<li><p><em><code>interrupt();</code>中断线程:中断状态被清除. <code>start();</code>用于开启一个线程. <code>notify();</code>用于唤醒一个处于等待状态的线程.</em></p>
</li>
<li><p><em>当一个Applet所在的浏览器被最小化以后,不能被调用的Applet方法是<code>init()</code></em></p>
<ul>
<li><code>init();</code> 当浏览器加载applet,进行初始化的时候调用该方法.</li>
<li><code>start();</code> 该方法在<code>init()</code>方法之后调用,当用户从其它页面转到包含applet的页面时该方法也被调用.</li>
<li><code>stop();</code> 在用户离开包含applet的页面时被调用.</li>
<li><code>destroy();</code> 当applet不再被使用,或浏览器退出的时候,该方法被调用.</li>
</ul>
</li>
</ol>
<hr>
<ul>
<li><h3 id="操作题总结-重点-API介绍"><a href="#操作题总结-重点-API介绍" class="headerlink" title="操作题总结(重点+API介绍)"></a>操作题总结(<code>重点+API介绍</code>)</h3></li>
</ul>
<ol>
<li><p><em>数组的算法排序继承于 <code>Comparable</code></em></p>
</li>
<li><p><em>JApplet(<code>init()</code>方法中接收来自html页面上的参数).</em></p>
</li>
<li><p><em>通过<code>setName(String str);</code>为继承Thread的子类的线程初始化名字.</em></p>
</li>
<li><p><em><code>equals();</code>方法比较的是两个字符串的内容是否相等.而 <code>==</code> 符号比较的是: 两个字符串的地址是否相同.</em></p>
</li>
<li><p><em>当程序中涉及鼠标点击事件需要继承<code>MouseAdapter</code>类来对鼠标做出的动作进行相应的回应 !</em></p>
</li>
<li><p><em><code>paint(Graphics g)</code>,调用 <code>g.drawOval();</code>可以画同心圆.</em></p>
</li>
<li><p><em>Applet中绘制指定文本字符串使用：<code>drawString();</code></em></p>
</li>
<li><p><em>Java中String类提供了<code>charAt();</code>方法遍历每个字符.</em> </p>
</li>
<li><p><em>常用布局管理器</em></p>
<ul>
<li><code>FlowLayout</code>,<code>BorderLayout</code>,<code>GridLayout</code>,<code>CardLayout</code>,<code>GridBagLayout</code>.</li>
<li>注意: <code>JLabel</code>对象可以显示文本,图像或同时显示两者,创建对象时,在构造函数中输入要显示的对象即可.</li>
</ul>
</li>
<li><p><em><code>getContentPane();</code>方法获得JFrame的内容面板. <code>getSource();</code> 找到给定名称的资源</em>.</p>
</li>
<li><p><em><code>frame.pack();-Method in class java.awt. Window.</code> 使此窗口的大小适合其子组件的首选大小和布局.</em></p>
</li>
<li><p><em><code>JPanel</code>是Java图形用户界面(GUI)工具包swing中的面板容器类,包含于javax.swing包,是一种轻量级容器,可以加入到<code>JFrame</code>窗体中,所以我们       需要继承此类作为画板供JFrame类来操作</em></p>
</li>
<li><p><em>通过鼠标点击获取相应的请求命令方法为: <code>e.getActionCommand();</code></em></p>
</li>
<li><p><em><code>beep() - Method in class java.awt. Toolkit</code>. 根据本地系统设置和硬件功能发出音频蜂鸣声.</em></p>
<ul>
<li>for example: Toolkit.getDefaultToolkit().beep(); </li>
</ul>
</li>
<li><p><em><code>drawRect(int, int, int, int) - Method in class java.awt.Graphics</code> 绘制指定矩形的轮廓.</em></p>
</li>
<li><p><em><code>DataOutputStream</code> 数据输出流允许应用程序以机器无关方式将Java基本数据类型写到底层输出流,<br> <code>DataInputStream</code> 类提供<code>readChar();</code>方法来读取文件中的字符.</em></p>
</li>
<li><p><em><code>Java IO</code></em></p>
<div class="hljs"><pre><code class="hljs java">   System.getProperty(<span class="hljs-string">"user.dir"</span>);     获取当前的工作路径.
getName();                          方法获取文件名，getPath();获取文件路径.
isDirectory();                      判断是否是文件.</code></pre></div>


</li>
</ol>
<ol start="19">
<li><em><code>extends Thread</code> 与 <code>implements Runnable</code> 使用</em><div class="hljs"><pre><code class="hljs java">   当通过`implements Runnable`创建线程:将实现了Runnable接口的对象作为`target`参数传递给Thread类即可,格式如下:
<span class="hljs-keyword">new</span> Thread(`实现了Runnable接口的对象名`);
举例:	
	<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">Java_2</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">Runnable</span> </span>&#123; 
 		    <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">void</span> <span class="hljs-title">main</span><span class="hljs-params">(String[]args)</span> </span>&#123;
     			Java_2 r = <span class="hljs-keyword">new</span> Java_2();
     		        Thread t = <span class="hljs-keyword">new</span> Thread( r );
    			       t.start(); 
 			 &#125;···

   通过`extends Thread`创建线程:
Thread本身实现了`Runnable`接口,重写其`run()`方法即可;线程创建后,需要调用`start();`方法运行.</code></pre></div>


</li>
</ol>
<ol start="20">
<li><div class="hljs"><pre><code class="hljs java">setPreferredSize(<span class="hljs-keyword">new</span> Dimension(<span class="hljs-number">280</span>, <span class="hljs-number">60</span>));
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">setPreferredSize</span><span class="hljs-params">(Dimension preferredSize)</span></span>&#123;...&#125;

将此组件的首选大小设置为常量值. 随后`getPreferredSize()`总是返回此值.将首选大小设置为`<span class="hljs-keyword">null</span>`可恢复默认行为. 
`Dimension` : 类封装单个对象中组件的宽度和高度(以整数精度).</code></pre></div>


</li>
</ol>
<ol start="21">
<li><em><code>DecimalFormat</code>类提供的<code>format();</code>方法可以将数据格式化.</em><div class="hljs"><pre><code class="hljs java"><span class="hljs-function"><span class="hljs-keyword">public</span> class DecimalFormat extends <span class="hljs-title">NumberFormatDecimalFormat</span><span class="hljs-params">()</span></span>&#123;...&#125;

`DecimalFormat`是格式为十进制数的NumberFormat的具体子类. 它具有各种功能,旨在使任何地区的数字解析和格式化,包括支持西方,阿拉伯语和印度数字。它还支持不同类型的数字,包括整数(<span class="hljs-number">123</span>..),定点数(<span class="hljs-number">123.4</span>),科学记数法(<span class="hljs-number">1.23E4</span>),百分比(<span class="hljs-number">12</span>％),和货币金额(<span class="hljs-number">123</span>美元),所有这些都可以进行本地化.</code></pre></div>


</li>
</ol>
<ol start="22">
<li><p><em>窗体事件</em></p>
<div class="hljs"><pre><code class="hljs java">setDefaultCloseOperation();     设置用户在此窗口上发起<span class="hljs-string">"close"</span>时默认执行操作.
JFrame.EXIT_ON_CLOSE;           `close`式关闭程序退出窗口.

<span class="hljs-keyword">for</span> example: frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);</code></pre></div>
</li>
<li><p><em>常用事件类</em></p>
<div class="hljs"><pre><code class="hljs java"><span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">addActionListener</span><span class="hljs-params">(ActionListener e)</span></span>&#123;..&#125;
添加指定的动作侦听器以从此按钮接收动作事件.当用户按下或释放鼠标在此按钮上时,会发生动作事件.如果`e`为空,则不会抛出任何异常.
也不会执行任何操作.

<span class="hljs-keyword">for</span> example: saveButton.addActionListener(<span class="hljs-keyword">this</span>);</code></pre></div>


</li>
</ol>
<hr>
<ul>
<li><p><strong>哎哟终于写好了 ! 伸个懒腰 ٩(๑❛ᴗ❛๑)۶ ~ 最近没零花钱买<code>麦斯威尔</code>了,然后每天的状态就像下面的俺的小黄人一样  ╰( ´・ω・)つ──☆✿✿✿</strong></p>
</li>
<li><p><img src="/2019/03/15/%E5%85%A8%E5%9B%BD%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%AD%89%E7%BA%A7%E8%80%83%E8%AF%95-Java/awkwardness.jpg" srcset="/img/loading.gif" alt=" "></p>
</li>
<li><h5 id="后期有时间还写推出NCRE-MySQL-NCRE-C-NCRE-三级数据库等全国计算机等考题目解析-最近忙于备考-所以先写作先放一放"><a href="#后期有时间还写推出NCRE-MySQL-NCRE-C-NCRE-三级数据库等全国计算机等考题目解析-最近忙于备考-所以先写作先放一放" class="headerlink" title="后期有时间还写推出NCRE-MySQL,NCRE-C,NCRE-三级数据库等全国计算机等考题目解析 ! 最近忙于备考,所以先写作先放一放 ~"></a>后期有时间还写推出<code>NCRE-MySQL</code>,<code>NCRE-C</code>,<code>NCRE-三级数据库</code>等全国计算机等考题目解析 ! 最近忙于备考,所以先写作先放一放 ~</h5></li>
</ul>

            </article>
            <hr>
            <div>
              <div class="post-metas mb-3">
                
                
                  <div class="post-meta">
                    <i class="iconfont icon-tags"></i>
                    
                      <a class="hover-with-bg" href="/tags/Java/">Java</a>
                    
                      <a class="hover-with-bg" href="/tags/NCRE/">NCRE</a>
                    
                  </div>
                
              </div>
              
                <p class="note note-warning">本博客所有文章除特别声明外，均采用 <a href="https://creativecommons.org/licenses/by-sa/4.0/deed.zh" target="_blank" rel="nofollow noopener noopener">CC BY-SA 4.0 协议</a> ，转载请注明出处！</p>
              
              
                <div class="post-prevnext row">
                  <div class="post-prev col-6">
                    
                    
                      <a href="/2019/03/16/static-keyword/">
                        <i class="iconfont icon-arrowleft"></i>
                        <span class="hidden-mobile">static keyword</span>
                        <span class="visible-mobile">Previous</span>
                      </a>
                    
                  </div>
                  <div class="post-next col-6">
                    
                    
                      <a href="/2019/03/14/JDBC-%E5%B8%B8%E8%A7%81%E9%94%99%E8%AF%AF%E5%88%86%E6%9E%90/">
                        <span class="hidden-mobile">JDBC 常见错误分析</span>
                        <span class="visible-mobile">Next</span>
                        <i class="iconfont icon-arrowright"></i>
                      </a>
                    
                  </div>
                </div>
              
            </div>

            
          </div>
        </div>
      </div>
    </div>
    
      <div class="d-none d-lg-block col-lg-2 toc-container" id="toc-ctn">
        <div id="toc">
  <p class="toc-header"><i class="iconfont icon-list"></i>&nbsp;TOC</p>
  <div id="tocbot"></div>
</div>

      </div>
    
  </div>
</div>

<!-- Custom -->


    
  </main>

  
    <a id="scroll-top-button" href="#" role="button">
      <i class="iconfont icon-arrowup" aria-hidden="true"></i>
    </a>
  

  
    <div class="modal fade" id="modalSearch" tabindex="-1" role="dialog" aria-labelledby="ModalLabel"
     aria-hidden="true">
  <div class="modal-dialog modal-dialog-scrollable modal-lg" role="document">
    <div class="modal-content">
      <div class="modal-header text-center">
        <h4 class="modal-title w-100 font-weight-bold">Search</h4>
        <button type="button" id="local-search-close" class="close" data-dismiss="modal" aria-label="Close">
          <span aria-hidden="true">&times;</span>
        </button>
      </div>
      <div class="modal-body mx-3">
        <div class="md-form mb-5">
          <input type="text" id="local-search-input" class="form-control validate">
          <label data-error="x" data-success="v"
                 for="local-search-input">keyword</label>
        </div>
        <div class="list-group" id="local-search-result"></div>
      </div>
    </div>
  </div>
</div>
  

  

  

  <footer class="mt-5">
  <div class="text-center py-3">
    <div>
      <a href="https://hexo.io" target="_blank" rel="nofollow noopener"><span>Hexo</span></a>
      <i class="iconfont icon-love"></i>
      <a href="https://github.com/fluid-dev/hexo-theme-fluid" target="_blank" rel="nofollow noopener">
        <span>Fluid</span></a>
    </div>
    
  <div class="statistics">
    
    

    
      
        <!-- 不蒜子统计PV -->
        <span id="busuanzi_container_site_pv" style="display: none">
            总访问量 
            <span id="busuanzi_value_site_pv"></span>
             次
          </span>
      
      
        <!-- 不蒜子统计UV -->
        <span id="busuanzi_container_site_uv" style="display: none">
            总访客数 
            <span id="busuanzi_value_site_uv"></span>
             人
          </span>
      
    
  </div>


    

    
  </div>
</footer>

<!-- SCRIPTS -->
<script  src="https://cdn.staticfile.org/jquery/3.4.1/jquery.min.js" ></script>
<script  src="https://cdn.staticfile.org/twitter-bootstrap/4.4.1/js/bootstrap.min.js" ></script>
<script  src="/js/debouncer.js" ></script>
<script  src="/js/main.js" ></script>

<!-- Plugins -->


  
    <script  src="/js/lazyload.js" ></script>
  



  <script defer src="https://cdn.staticfile.org/clipboard.js/2.0.6/clipboard.min.js" ></script>
  <script  src="/js/clipboard-use.js" ></script>



  <script defer src="https://busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js" ></script>





  <script  src="https://cdn.staticfile.org/tocbot/4.11.1/tocbot.min.js" ></script>
  <script>
    $(document).ready(function () {
      var boardCtn = $('#board-ctn');
      var boardTop = boardCtn.offset().top;

      tocbot.init({
        tocSelector: '#tocbot',
        contentSelector: 'article.markdown-body',
        headingSelector: 'h1,h2,h3,h4,h5,h6',
        linkClass: 'tocbot-link',
        activeLinkClass: 'tocbot-active-link',
        listClass: 'tocbot-list',
        isCollapsedClass: 'tocbot-is-collapsed',
        collapsibleClass: 'tocbot-is-collapsible',
        collapseDepth: 0,
        scrollSmooth: true,
        headingsOffset: -boardTop
      });
      if ($('.toc-list-item').length > 0) {
        $('#toc').css('visibility', 'visible');
      }
    });
  </script>



  <script  src="https://cdn.staticfile.org/typed.js/2.0.11/typed.min.js" ></script>
  <script>
    var typed = new Typed('#subtitle', {
      strings: [
        '  ',
        "全国计算机等级考试-Java&nbsp;",
      ],
      cursorChar: "_",
      typeSpeed: 70,
      loop: false,
    });
    typed.stop();
    $(document).ready(function () {
      $(".typed-cursor").addClass("h2");
      typed.start();
    });
  </script>



  <script  src="https://cdn.staticfile.org/anchor-js/4.2.2/anchor.min.js" ></script>
  <script>
    anchors.options = {
      placement: "right",
      visible: "hover",
      
    };
    var el = "h1,h2,h3,h4,h5,h6".split(",");
    var res = [];
    for (item of el) {
      res.push(".markdown-body > " + item)
    }
    anchors.add(res.join(", "))
  </script>



  <script  src="/js/local-search.js" ></script>
  <script>
    var path = "/local-search.xml";
    var inputArea = document.querySelector("#local-search-input");
    inputArea.onclick = function () {
      searchFunc(path, 'local-search-input', 'local-search-result');
      this.onclick = null
    }
  </script>



  <script  src="https://cdn.staticfile.org/fancybox/3.5.7/jquery.fancybox.min.js" ></script>
  <link  rel="stylesheet" href="https://cdn.staticfile.org/fancybox/3.5.7/jquery.fancybox.min.css" />

  <script>
    $('#post img:not(.no-zoom img, img[no-zoom]), img[zoom]').each(
      function () {
        var element = document.createElement('a');
        $(element).attr('data-fancybox', 'images');
        $(element).attr('href', $(this).attr('src'));
        $(this).wrap(element);
      }
    );
  </script>







  
  
    <script>
      !function (e, t, a) {
        function r() {
          for (var e = 0; e < s.length; e++) s[e].alpha <= 0 ? (t.body.removeChild(s[e].el), s.splice(e, 1)) : (s[e].y--, s[e].scale += .004, s[e].alpha -= .013, s[e].el.style.cssText = "left:" + s[e].x + "px;top:" + s[e].y + "px;opacity:" + s[e].alpha + ";transform:scale(" + s[e].scale + "," + s[e].scale + ") rotate(45deg);background:" + s[e].color + ";z-index:99999");
          requestAnimationFrame(r)
        }

        function n() {
          var t = "function" == typeof e.onclick && e.onclick;
          e.onclick = function (e) {
            t && t(), o(e)
          }
        }

        function o(e) {
          var a = t.createElement("div");
          a.className = "heart", s.push({
            el: a,
            x: e.clientX - 5,
            y: e.clientY - 5,
            scale: 1,
            alpha: 1,
            color: c()
          }), t.body.appendChild(a)
        }

        function i(e) {
          var a = t.createElement("style");
          a.type = "text/css";
          try {
            a.appendChild(t.createTextNode(e))
          } catch (t) {
            a.styleSheet.cssText = e
          }
          t.getElementsByTagName("head")[0].appendChild(a)
        }

        function c() {
          return "rgb(" + ~~(255 * Math.random()) + "," + ~~(255 * Math.random()) + "," + ~~(255 * Math.random()) + ")"
        }

        var s = [];
        e.requestAnimationFrame = e.requestAnimationFrame || e.webkitRequestAnimationFrame || e.mozRequestAnimationFrame || e.oRequestAnimationFrame || e.msRequestAnimationFrame || function (e) {
          setTimeout(e, 1e3 / 60)
        }, i(".heart{width: 10px;height: 10px;position: fixed;background: #f00;transform: rotate(45deg);-webkit-transform: rotate(45deg);-moz-transform: rotate(45deg);}.heart:after,.heart:before{content: '';width: inherit;height: inherit;background: inherit;border-radius: 50%;-webkit-border-radius: 50%;-moz-border-radius: 50%;position: fixed;}.heart:after{top: -5px;}.heart:before{left: -5px;}"), n(), r()
      }(window, document);
    </script>
  














</body>
</html>
